home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Interactive Reference Guide
/
C-C++ Interactive Reference Guide.iso
/
c_ref
/
csource5
/
357_01
/
cstar1.exe
/
T1.C
< prev
next >
Wrap
C/C++ Source or Header
|
1991-06-18
|
16KB
|
909 lines
/*
source: t1.c
started: October 16, 1985
version:
September 10, 1986;
March 7, 1989
PUBLIC DOMAIN SOFTWARE
The CSTAR program was placed in the public domain on June 15, 1991,
by its author and sole owner,
Edward K. Ream
1617 Monroe Street
Madison, WI 53711
(608) 257-0802
CSTAR may be used for any commercial or non-commercial purpose.
See cstar.h or cstar.c for a DISCLAIMER OF WARRANTIES.
*/
#include "cstar.h"
#define table(name, n) struct t1_tab_struct FAR name [n+1] = {
#define sub_tab(name, str_len, n_entries) {name, str_len, n_entries}
#define end_tab {0L, 0, 0}}
#define header(label,n_entries)\
struct t1_entry_struct FAR label [n_entries] = {
/* -----
#define ins(string,val) dc.b string,0,X_TOK,val
#define pseudo(string,val) dc.b string,0,Z_TOK,val
#define areg(string,val) dc.b string,0,ID_TOK,val
#define dreg(string,val) dc.b string,0,ID_TOK,val
#define greg(string,val) dc.b string,0,ID_TOK,val
#define key(string,val) dc.b string,0,val,0
#define cc_code(string,val) dc.b string,0,CC_TOK,val
----- */
#define ins(string,val) { string,X_TOK,val }
#define pseudo(string,val) { string,Z_TOK,val }
#define areg(string,val) { string,ID_TOK,val }
#define dreg(string,val) { string,ID_TOK,val }
#define greg(string,val) { string,ID_TOK,val }
#define key(string,val) { string,val,0 }
#define cc_code(string,val) { string,CC_TOK,val }
#define end_h }
/*
Reserved word tables (One entry per reserved word.)
This table holds the names of all reserved words
machine language instructions
pseudo ops
condition constant
C reserved words
This table is used by the is_reserved routine in the preprocessor.
Each table is made up of zero or more subtables, one subtable for
each length. Subtables are arranged in increasing length.
With each subtable, entries are arranged alphabetically.
*/
/* ----- A TABLE ----- */
#define a2_n 8
header(a2_tab, a2_n)
areg("a0", R_A0),
areg("a1", R_A1),
areg("a2", R_A2),
areg("a3", R_A3),
areg("a4", R_A4),
areg("a5", R_A5),
areg("a6", R_A6),
areg("a7", R_A7)
end_h;
#define a3_n 12
header(a3_tab, a3_n)
areg("a0w", R_A0W),
areg("a1w", R_A1W),
areg("a2w", R_A2W),
areg("a3w", R_A3W),
areg("a4w", R_A4W),
areg("a5w", R_A5W),
areg("a6w", R_A6W),
areg("a7w", R_A7W),
ins("add", X_ADD),
ins("and", X_AND),
ins("asl", X_ASL),
ins("asr", X_ASR)
end_h;
#define a4_n 7
header(a4_tab, a4_n)
ins("abcd", X_ABCD),
ins("adda", X_ADDA),
ins("addi", X_ADDI),
ins("addq", X_ADDQ),
ins("addx", X_ADDX),
ins("andi", X_ADDI),
key("auto", K_AUTO)
end_h;
#define a5_n 2
header(a5_tab, a5_n)
pseudo("addsp", Z_ADDSP),
pseudo("adjsp", Z_ADJSP)
end_h;
table(a_tab, 4)
sub_tab(a2_tab, 2, a2_n),
sub_tab(a3_tab, 3, a3_n),
sub_tab(a4_tab, 4, a4_n),
sub_tab(a5_tab, 5, a5_n),
end_tab;
/* ----- B TABLE ----- */
#define b3_n 18
header(b3_tab, b3_n)
ins("bcc", X_BCC),
ins("bcs", X_BCS),
ins("beq", X_BEQ),
ins("bge", X_BGE),
ins("bgt", X_BGT),
ins("bhi", X_BHI),
ins("ble", X_BLE),
ins("blo", X_BLO),
ins("bls", X_BLS),
ins("blt", X_BLT),
ins("bmi", X_BMI),
ins("bne", X_BNE),
ins("bpl", X_BPL),
ins("bra", X_BRA),
ins("bsr", X_BSR),
pseudo("bss", Z_BSS),
ins("bvc", X_BVC),
ins("bvs", X_BVS)
end_h;
#define b4_n 4
header(b4_tab, b4_n)
ins("bchg", X_BCHG),
ins("bclr", X_BCLR),
ins("bset", X_BSET),
ins("btst", X_BTST)
end_h;
#define b5_n 1
header(b5_tab, b5_n)
key("break", K_BREAK)
end_h;
table(b_tab, 3)
sub_tab(b3_tab, 3, b3_n),
sub_tab(b4_tab, 4, b4_n),
sub_tab(b5_tab, 5, b5_n),
end_tab;
/* ----- C TABLE ------ */
#define c3_n 4
header(c3_tab, c3_n)
greg("ccr", R_CCR),
ins("chk", X_CHK),
ins("clr", X_CLR),
ins("cmp", X_CMP)
end_h;
#define c4_n 5
header(c4_tab, c4_n)
key("case", K_CASE),
key("char", K_CHAR),
ins("cmpa", X_CMPA),
ins("cmpi", X_CMPI),
ins("cmpm", X_CMPM),
end_h;
#define c5_n 1
header(c5_tab, c5_n)
key("const", K_CONST)
end_h;
#define c8_n 1
header(c8_tab, c8_n)
key("continue", K_CONTINUE)
end_h;
table(c_tab, 4)
sub_tab(c3_tab, 3, c3_n),
sub_tab(c4_tab, 4, c4_n),
sub_tab(c5_tab, 5, c5_n),
sub_tab(c8_tab, 8, c8_n),
end_tab;
/* ----- D TABLE ----- */
#define d2_n 11
header(d2_tab, d2_n)
dreg("d0", R_D0),
dreg("d1", R_D1),
dreg("d2", R_D2),
dreg("d3", R_D3),
dreg("d4", R_D4),
dreg("d5", R_D5),
dreg("d6", R_D6),
dreg("d7", R_D7),
pseudo("dc", Z_DC),
key("do", K_DO),
pseudo("ds", Z_DS)
end_h;
#define d3_n 24
header(d3_tab, d3_n)
dreg("d0b", R_D0B),
dreg("d1b", R_D1B),
dreg("d2b", R_D2B),
dreg("d3b", R_D3B),
dreg("d4b", R_D4B),
dreg("d5b", R_D5B),
dreg("d6b", R_D6B),
dreg("d7b", R_D7B),
dreg("d0w", R_D0W),
dreg("d1w", R_D1W),
dreg("d2w", R_D2W),
dreg("d3w", R_D3W),
dreg("d4w", R_D4W),
dreg("d5w", R_D5W),
dreg("d6w", R_D6W),
dreg("d7w", R_D7W),
ins("dbf", X_DBF),
ins("dbt", X_DBT),
pseudo("dcb", Z_DCB),
pseudo("dcl", Z_DCL),
pseudo("dcw", Z_DCW),
pseudo("dsb", Z_DSB),
pseudo("dsl", Z_DSL),
pseudo("dsw", Z_DSW)
end_h;
#define d4_n 19
header(d4_tab, d4_n)
pseudo("data", Z_DATA),
ins("dbcc", X_DBCC),
ins("dbcs", X_DBCS),
ins("dbeq", X_DBEQ),
ins("dbge", X_DBGE),
ins("dbgt", X_DBGT),
ins("dbhi", X_DBHI),
ins("dble", X_DBLE),
ins("dblo", X_DBLO),
ins("dbls", X_DBLS),
ins("dblt", X_DBLT),
ins("dbmi", X_DBMI),
ins("dbne", X_DBNE),
ins("dbpl", X_DBPL),
ins("dbra", X_DBRA),
ins("dbvc", X_DBVC),
ins("dbvs", X_DBVS),
ins("divs", X_DIVS),
ins("divu", X_DIVU)
end_h;
#define d6_n 1
header(d6_tab, d6_n)
key("double", K_DOUBLE)
end_h;
#define d7_n 1
header(d7_tab, d7_n)
key("default", K_DEFAULT)
end_h;
table(d_tab, 5)
sub_tab(d2_tab, 2, d2_n),
sub_tab(d3_tab, 3, d3_n),
sub_tab(d4_tab, 4, d4_n),
sub_tab(d6_tab, 6, d6_n),
sub_tab(d7_tab, 7, d7_n),
end_tab;
/* ----- E TABLE ----- */
#define e3_n 3
header(e3_tab, e3_n)
ins("eor", X_EOR),
ins("exg", X_EXG),
ins("ext", X_EXT)
end_h;
#define e4_n 2
header(e4_tab, e4_n)
key("else", K_ELSE),
ins("eori", X_EORI)
end_h;
#define e5_n 1
header(e5_tab, e5_n)
key("entry", K_ENTRY)
end_h;
#define e6_n 1
header(e6_tab, e6_n)
key("extern", K_EXTERN)
end_h;
table(e_tab, 4)
sub_tab(e3_tab, 3, e3_n),
sub_tab(e4_tab, 4, e4_n),
sub_tab(e5_tab, 5, e5_n),
sub_tab(e6_tab, 6, e6_n),
end_tab;
/* ----- F TABLE ----- */
#define f3_n 1
header(f3_tab, f3_n)
key("for", K_FOR)
end_h;
#define f5_n 1
header(f5_tab, f5_n)
key("float", K_FLOAT)
end_h;
table(f_tab, 2)
sub_tab(f3_tab, 3, f3_n),
sub_tab(f5_tab, 5, f5_n),
end_tab;
/* ----- G TABLE ----- */
#define g4_n 1
header(g4_tab, g4_n)
key("goto", K_GOTO)
end_h;
table(g_tab, 1)
sub_tab(g4_tab, 4, g4_n),
end_tab;
/* ----- I TABLE ----- */
#define i2_n 1
header(i2_tab, i2_n)
key("if", K_IF)
end_h;
#define i3_n 1
header(i3_tab, i3_n)
key("int", K_INT)
end_h;
table(i_tab, 2)
sub_tab(i2_tab, 2, i2_n),
sub_tab(i3_tab, 3, i3_n),
end_tab;
/* ----- J TABLE ----- */
#define j3_n 2
header(j3_tab, j3_n)
ins("jmp", X_JMP),
ins("jsr", X_JSR)
end_h;
table(j_tab, 1)
sub_tab(j3_tab, 3, j3_n),
end_tab;
/* ----- L TABLE ----- */
#define l3_n 3
header(l3_tab, l3_n)
ins("lea", X_LEA),
ins("lsl", X_LSL),
ins("lsr", X_LSR)
end_h;
#define l4_n 2
header(l4_tab, l4_n)
ins("link", X_LINK),
key("long", K_LONG)
end_h;
table(l_tab, 2)
sub_tab(l3_tab, 3, l3_n),
sub_tab(l4_tab, 4, l4_n),
end_tab;
/* ----- M TABLE ----- */
#define m4_n 4
header(m4_tab, m4_n)
ins("move", X_MOVE),
ins("muls", X_MULS),
ins("mulu", X_MULU)
end_h;
#define m5_n 4
header(m5_tab, m5_n)
ins("movea", X_MOVEA),
ins("movem", X_MOVEM),
ins("movep", X_MOVEP),
ins("moveq", X_MOVEQ)
end_h;
table(m_tab, 2)
sub_tab(m4_tab, 4, m4_n),
sub_tab(m5_tab, 5, m5_n),
end_tab;
/* ----- N TABLE ----- */
#define n3_n 3
header(n3_tab, n3_n)
ins("neg", X_NEG),
ins("nop", X_NOP),
ins("not", X_NOT)
end_h;
#define n4_n 2
header(n4_tab, n4_n)
ins("nbcd", X_NBCD),
ins("negx", X_NEGX)
end_h;
#define n6_n 1
header(n6_tab, n6_n)
pseudo("nobase", Z_NOBASE)
end_h;
table(n_tab, 3)
sub_tab(n3_tab, 3, n3_n),
sub_tab(n4_tab, 4, n4_n),
sub_tab(n6_tab, 6, n6_n),
end_tab;
/* ----- O TABLE ----- */
#define o2_n 1
header(o2_tab, o2_n)
ins("or", X_OR)
end_h;
#define o3_n 2
header(o3_tab, o3_n)
pseudo("org", Z_ORG),
ins("ori", X_ORI)
end_h;
table(o_tab, 2)
sub_tab(o2_tab, 2, o2_n),
sub_tab(o3_tab, 3, o3_n),
end_tab;
/* ----- P TABLE ----- */
#define p2_n 1
header(p2_tab, p2_n)
greg("pc", R_PC)
end_h;
#define p3_n 2
header(p3_tab, p3_n)
ins("pea", X_PEA),
pseudo("pop", Z_POP)
end_h;
#define p4_n 1
header(p4_tab, p4_n)
pseudo("push", Z_PUSH)
end_h;
table(p_tab, 3)
sub_tab(p2_tab, 2, p2_n),
sub_tab(p3_tab, 3, p3_n),
sub_tab(p4_tab, 4, p4_n),
end_tab;
/* ----- R TABLE ----- */
#define r2_n 10
header(r2_tab, r2_n)
dreg("r0", R_D0),
dreg("r1", R_D1),
dreg("r2", R_D2),
dreg("r3", R_D3),
dreg("r4", R_D4),
dreg("r5", R_D5),
dreg("r6", R_D6),
dreg("r7", R_D7),
areg("r8", R_A0),
areg("r9", R_A1)
end_h;
#define r3_n 29
header(r3_tab, r3_n)
areg("r10", R_A2),
areg("r11", R_A3),
areg("r12", R_A4),
areg("r13", R_A5),
areg("r14", R_A6),
areg("r15", R_A7),
dreg("r0b", R_D0B),
dreg("r1b", R_D1B),
dreg("r2b", R_D2B),
dreg("r3b", R_D3B),
dreg("r4b", R_D4B),
dreg("r5b", R_D5B),
dreg("r6b", R_D6B),
dreg("r7b", R_D7B),
dreg("r0w", R_D0W),
dreg("r1w", R_D1W),
dreg("r2w", R_D2W),
dreg("r3w", R_D3W),
dreg("r4w", R_D4W),
dreg("r5w", R_D5W),
dreg("r6w", R_D6W),
dreg("r7w", R_D7W),
areg("r8w", R_A0W),
areg("r9w", R_A1W),
ins("rol", X_ROL),
ins("ror", X_ROR),
ins("rte", X_RTE),
ins("rtr", X_RTR),
ins("rts", X_RTS)
end_h;
#define r4_n 8
header(r4_tab, r4_n)
areg("r10w", R_A2W),
areg("r11w", R_A3W),
areg("r12w", R_A4W),
areg("r13w", R_A5W),
areg("r14w", R_A6W),
areg("r15w", R_A7W),
ins("roxl", X_ROXL),
ins("roxr", X_ROXR)
end_h;
#define r5_n 1
header(r5_tab, r5_n)
ins("reset", X_RESET)
end_h;
#define r6_n 1
header(r6_tab, r6_n)
key("return", K_RETURN)
end_h;
#define r8_n 1
header(r8_tab, r8_n)
key("register", K_REGISTER)
end_h;
table(r_tab, 5)
sub_tab(r2_tab, 2, r2_n),
sub_tab(r3_tab, 3, r3_n),
sub_tab(r5_tab, 5, r5_n),
sub_tab(r6_tab, 6, r6_n),
sub_tab(r8_tab, 8, r8_n),
end_tab;
/* ----- S TABLE ----- */
#define s2_n 4
header(s2_tab, s2_n)
ins("sf", X_SF),
areg("sp", R_A7),
greg("sr", R_SR),
ins("st", X_ST)
end_h;
#define s3_n 17
header(s3_tab, s3_n)
ins("scc", X_SCC),
ins("scs", X_SCS),
ins("seq", X_SEQ),
ins("sge", X_SGE),
ins("sgt", X_SGT),
ins("shi", X_SHI),
ins("sle", X_SLE),
ins("slo", X_SLO),
ins("sls", X_SLS),
ins("slt", X_SLT),
ins("smi", X_SMI),
ins("sne", X_SNE),
ins("spl", X_SPL),
areg("spw", R_A7W),
ins("sub", X_SUB),
ins("svc", X_SVC),
ins("svs", X_SVS)
end_h;
#define s4_n 7
header(s4_tab, s4_n)
ins("sbcd", X_SBCD),
ins("stop", X_STOP),
ins("suba", X_SUBA),
ins("subi", X_SUBI),
ins("subq", X_SUBQ),
ins("subx", X_SUBX),
ins("swap", X_SWAP)
end_h;
#define s5_n 2
header(s5_tab, s5_n)
key("short", K_SHORT),
pseudo("subsp", Z_SUBSP)
end_h;
#define s6_n 6
header(s6_tab, s6_n)
key("signed", K_SIGNED),
key("sizeof", K_SIZEOF),
key("static", K_STATIC),
pseudo("stbase", Z_BASE),
key("struct", K_STRUCT),
key("switch", K_SWITCH)
end_h;
table(s_tab, 5)
sub_tab(s2_tab, 2, s2_n),
sub_tab(s3_tab, 3, s3_n),
sub_tab(s4_tab, 4, s4_n),
sub_tab(s5_tab, 5, s5_n),
sub_tab(s6_tab, 6, s6_n),
end_tab;
/* ----- T TABLE ----- */
#define t3_n 2
header(t3_tab, t3_n)
ins("tas", X_TAS),
ins("tst", X_TST)
end_h;
#define t4_n 2
header(t4_tab, t4_n)
pseudo("text", Z_TEXT),
ins("trap", X_TRAP)
end_h;
#define t5_n 1
header(t5_tab, t5_n)
ins("trapv", X_TRAPV)
end_h;
#define t7_n 1
header(t7_tab, t7_n)
key("typedef", K_TYPEDEF)
end_h;
table(t_tab, 4)
sub_tab(t3_tab, 3, t3_n),
sub_tab(t4_tab, 4, t4_n),
sub_tab(t5_tab, 5, t5_n),
sub_tab(t7_tab, 7, t7_n),
end_tab;
/* ----- U TABLE ----- */
#define u3_n 1
header(u3_tab, u3_n)
areg("usp", R_USP)
end_h;
#define u4_n 1
header(u4_tab, u4_n)
ins("unlk", X_UNLK)
end_h;
#define u5_n 1
header(u5_tab, u5_n)
key("union", K_UNION)
end_h;
#define u8_n 1
header(u8_tab, u8_n)
key("unsigned", K_UNSIGNED)
end_h;
table(u_tab, 4)
sub_tab(u3_tab, 3, u3_n),
sub_tab(u4_tab, 4, u4_n),
sub_tab(u5_tab, 5, u5_n),
sub_tab(u8_tab, 8, u8_n),
end_tab;
/* ----- V TABLE ----- */
#define v4_n 1
header(v4_tab, v4_n)
key("void", K_VOID)
end_h;
#define v8_n 1
header(v8_tab, v8_n)
key("volatile", K_VOLATILE)
end_h;
table(v_tab, 2)
sub_tab(v4_tab, 4, v4_n),
sub_tab(v8_tab, 8, v8_n),
end_tab;
/* ----- W TABLE ----- */
#define w5_n 1
header(w5_tab, w5_n)
key("while", K_WHILE)
end_h;
table(w_tab, 1)
sub_tab(w5_tab, 5, w5_n),
end_tab;
/*
Upper case table (for condition code constants).
*/
#define uc1_n 1
header(uc1_tab, uc1_n)
cc_code("C", CC_CS)
end_h;
#define uc2_n 2
header(uc2_tab, uc2_n)
cc_code("CC", CC_CC),
cc_code("CS", CC_CS)
end_h;
table(uc_tab, 2)
sub_tab(uc1_tab, 1, uc1_n),
sub_tab(uc2_tab, 2, uc2_n),
end_tab;
#define ue2_n 1
header(ue2_tab, ue2_n)
cc_code("EQ", CC_EQ)
end_h;
table(ue_tab, 1)
sub_tab(ue2_tab, 2, ue2_n),
end_tab;
#define uf1_n 1
header(uf1_tab, uf1_n)
cc_code("F", CC_F)
end_h;
table(uf_tab, 1)
sub_tab(uf1_tab, 1, uf1_n),
end_tab;
#define ug2_n 2
header(ug2_tab, ug2_n)
cc_code("GE", CC_GE),
cc_code("GT", CC_GT)
end_h;
table(ug_tab, 1)
sub_tab(ug2_tab, 2, ug2_n),
end_tab;
#define uh2_n 1
header(uh2_tab, uh2_n)
cc_code("HI", CC_HI)
end_h;
table(uh_tab, 1)
sub_tab(uh2_tab, 2, uh2_n),
end_tab;
#define ul2_n 4
header(ul2_tab, ul2_n)
cc_code("LE", CC_LE),
cc_code("LS", CC_LS),
cc_code("LT", CC_LT),
cc_code("LO", CC_LO)
end_h;
table(ul_tab, 1)
sub_tab(ul2_tab, 2, ul2_n),
end_tab;
#define um2_n 1
header(um2_tab, um2_n)
cc_code("MI", CC_MI)
end_h;
table(um_tab, 1)
sub_tab(um2_tab, 2, um2_n),
end_tab;
#define un2_n 4
header(un2_tab, un2_n)
cc_code("NC", CC_CC),
cc_code("NE", CC_NE),
cc_code("NV", CC_VC),
cc_code("NZ", CC_NE)
end_h;
table(un_tab, 1)
sub_tab(un2_tab, 2, un2_n),
end_tab;
#define up2_n 1
header(up2_tab, up2_n)
cc_code("PL", CC_PL)
end_h;
table(up_tab, 1)
sub_tab(up2_tab, 2, up2_n),
end_tab;
#define ut1_n 1
header(ut1_tab, ut1_n)
cc_code("T", CC_T)
end_h;
table(ut_tab, 1)
sub_tab(ut1_tab, 1, ut1_n),
end_tab;
#define uv1_n 1
header(uv1_tab, uv1_n)
cc_code("V", CC_VS)
end_h;
#define uv2_n 2
header(uv2_tab, uv2_n)
cc_code("VC", CC_VC),
cc_code("VS", CC_VS)
end_h;
table(uv_tab, 2)
sub_tab(uv1_tab, 1, uv1_n),
sub_tab(uv2_tab, 2, uv2_n),
end_tab;
#define uz1_n 1
header(uz1_tab, uz1_n)
cc_code("Z", CC_EQ)
end_h;
table(uz_tab, 1)
sub_tab(uz1_tab, 1, uz1_n),
end_tab;
/*
Indirect reserved word table
*/
struct t1_tab_struct * rwx_tab [] = {
0L, /* A */
0L, /* B */
uc_tab,
0L, /* D */
ue_tab,
uf_tab,
ug_tab,
uh_tab,
0L, /* I */
0L, /* J */
0L, /* K */
ul_tab,
um_tab,
un_tab,
0L, /* O */
up_tab,
0L, /* Q */
0L, /* R */
0L, /* S */
ut_tab,
0L, /* U */
uv_tab,
0L, /* W */
0L, /* X */
0L, /* Y */
uz_tab,
0L, /* [ */
0L, /* \ */
0L, /* ] */
0L, /* ^ */
0L, /* ; */
0L, /* single quote */
a_tab,
b_tab,
c_tab,
d_tab,
e_tab,
f_tab,
g_tab,
0L, /* h */
i_tab,
j_tab,
0L, /* k */
l_tab,
m_tab,
n_tab,
o_tab,
p_tab,
0L, /* q */
r_tab,
s_tab,
t_tab,
u_tab,
v_tab, /* v */
w_tab,
0L, /* x */
0L, /* y */
0L /* z */
};